﻿#include<iostream>
using namespace std;

const int N = 100010;
int q[N];
int n, k; //n表示输入几个数，k表示第k小的数

			  //l=0  r=4	k=3
int quicksort(int l, int r, int k)
{
	if (l == r)return q[l];
	int x = q[l];				//x=q[l]=2
	int i = l - 1, j = r + 1;	//i=-1.j=5
	while (i < j)
	{
		while (q[++i] < x);
		while (q[--j] > x);
		/*do ++i; while (q[i] < x);
		do --j; while (q[j] > x);*/
		if (i < j)
		{
			swap(q[i], q[j]);
		}
	}
	int sl = j - l + 1;//sl表示左边区间的数的个数
	//如果sl的个数大于k，那么要找的第k小的数就在左边区间
	if (k <= sl)return quicksort(l, j, k);
	/*/否则的话第k小的数在右半区间，第k小的数是对于整个区间来数的
		，所以在右边区间寻找的时候要减去左边区间的长度*/
	else return quicksort(j + 1, r, k - sl);
}
int main()
{
	cout << "案例二" << endl;
	cin >> n >> k;
	for (int i = 0; i < n; i++)
	{
		cin >> q[i];
	}
	cout << quicksort(0, n - 1, k) << endl;
	system("pause");
	return 0;
};